package com.itkjb.leisurely.resource.sys.service;

import com.itkjb.leisurely.core.base.IBaseService;
import com.itkjb.leisurely.resource.sys.model.SysMenuModel;
import com.itkjb.leisurely.resource.sys.model.vo.SysMenuVO;

import java.util.List;

/**
 * <p>
 * 系统菜单资源目录 服务类
 * </p>
 *
 * @author itkjb_gen
 * @since 2020-05-27
 */
public interface ISysMenuService extends IBaseService<SysMenuModel> {
    /**
     * 保存按钮
     * @param model
     * @return
     */
    boolean saveButton(SysMenuModel model);

    /**
     * 组装菜单树
     * @return
     */
    List<SysMenuVO> tree(SysMenuModel model);

    /**
     * 一键添加按钮
     * @param model
     * @return
     */
    boolean saveAutoAddButtonMenu(SysMenuModel model);

    /**
     * 查询所有的button,可根据parentId,指定查询
     * @param model
     * @return
     */
    List<SysMenuModel> getButtons(SysMenuModel model);

    /**
     * 查询所有菜单，并包含按钮，组装成树
     * @param model
     * @return
     */
    List<SysMenuVO> treeWithButton(SysMenuModel model);

    /**
     * 拼装菜单中的按钮信息
     * @param vos
     * @param bus
     */
    void treeWithButton(List<SysMenuVO> vos,List<SysMenuModel> bus);

    /**
     * 逻辑删除
     * @param ids
     * @return
     */
    boolean deleteByLogic(List<String> ids);

    /**
     * 获取当前菜单的下级菜单的id
     * @param id
     * @return
     */
    List<String> getSubIds(String id);


    /**
     * 为已登录的用户提供查询 根据角色ids，  查询菜单权限 编码
     *
     * @param roleIds
     * @return
     */
     List<SysMenuModel> findMenuPermissionByRoleId(List<String> roleIds);


    /**
     * 为已登录的用户提供查询  根据角色userId，  查询菜单权限 编码
     * @param userId
     * @return 返回 菜单的id，和权限编码，permission
     */
    List<SysMenuModel> findMenuPermissionByUserId(String userId);




}
